An integrated circuit has a large number of electronic components, such as transistors, logic gates, diodes, wires, etc., that are fabricated by forming layers of different materials and of different geometric shapes on various regions of a silicon wafer. To design an integrated circuit, a designer first creates high level behavior descriptions of the IC device using a high-level hardware design language. The high level behavior description of the IC device is translated into netlists of various levels of abstraction using a computer synthesis process. A netlist describes interconnections of nodes and components on the chip and includes information of circuit primitives such as transistors and diodes, their sizes and interconnections, for example. The circuit design is then transformed into a geometric description called a layout. The process of converting specifications of an integrated circuit into a layout is called the physical design. The result is a set of design files, which are then converted into pattern generator files.
Given the large numbers of circuit elements in today's integrated circuits, computer-aided design (CAD) and computer-aided engineering (CAE) tools have become essential in assisting circuit designers to produce these complicated ICs. With respect to the design, testing, and implementation of electronic circuit designs, these tools are commonly referred to as electronic design automation (EDA) tools.
For example, one type of EDA tool that is often used in the design process is the synthesis tool, which translates the behavioral representation of the circuit design (e.g., a Register-Transfer-Level (RTL) description) into an implementation representation (e.g., a gate-level representation). The synthesis tool chooses the implementation architecture based on parameters such as timing, footprint, and power consumption. The result of the synthesis process, the gate-level representation, is referred to as the revised circuit, while the behavioral property of the circuit, the RTL representation, is referred to as the golden circuit.
Another type of EDA tool that is commonly used is the verification tool. Verification may be performed at various stages of the electronic design process to verify the performance and functionality of the electronic design. For example, electrical analysis can be performed to verify and check the electrical behavior and performance of the circuit design, e.g., to obtain capacitance and resistance for specific geometric descriptions of conductors in the design. Physical design verification may be performed to check whether variations in the expected manufacture of the product will cause significant differences between the intended dimensions of the circuit features and the as-manufactured dimensions of those features on a fabricated circuit product. Functional verification may be performed to check the correct functionality of the circuit design. Formal verification may be employed to check that the as-designed circuit is equivalent to the original circuit specification.
As EDA tools advance to enable the implementation of designs with ever increasing complexity and size, the methodologies needed to run the tools becomes increasingly more difficult to implement. Taking the verification tool as an example, many tools require the user to write a control program or script (collectively referred to herein as a “control script” or “script”) to be executed by the verification tool to verify a design. If the execution of the control script cannot produce a satisfactory result to close the verification process, the user may need to revise the control script with additional features, advanced strategies, customized flows and then re-run the verification. The process of modifying the control script, retrying the verification, and then checking the results, and then retrying continues until the verification is closed.
Conventionally, this process of modifying the control script is performed manually by the user of the EDA tool. The problem is that modern EDA tools have become extremely complicated with a large number of potential options and features that can be employed to run the EDA tool, many of which are not easily known or implemented by the user. Moreover, rapid developments in the technology and equipment used to manufacture semiconductor ICs have allowed electronics manufacturers to create smaller and more densely packed chips that include very high numbers of circuit components and elements to be addressed by the control script. As a result, it has become very burdensome, inefficient, and possibly ineffective to require a user to manually create and/or modify a control script to control the EDA tools.
Therefore, there is a need for an improved approach to implement control scripts for EDA tools.